iT邦幫忙

2022 iThome 鐵人賽

DAY 28
3
Modern Web

今天我想來在 Angular 應用程式上加上測試保護系列 第 28

Day 28 - 自動化測試 - 利用 GitHub Actions 執行測試

  • 分享至 

  • xImage
  •  

前言

上一篇說明了如何利用 Jenkins 來執行自動化測試,而這一篇則會來說明 GubHub Actions 要如何執行自動化作業。

GitHub Actions 簡介

GitHub Actions 是一套由 GitHub 提供的 CI/CD 工具,我們可以利用 YAML 文件來定義每個自動化要執行的步驟。GitHub Actions 也允許工程人員把撰寫好的 Actions 工具發佈出來,給其他有需要的專案使用。

name: Action Name

on:
  push:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      ...

要使用 Github Actions 很簡單,我們只要在 .github/workflows 目錄內加入一或多個 *.yml 檔案,GitHub 就會依此目錄的檔案內容設定執行自動化程式。

利用 GitHub Actions 執行自動化測試

因此,如同 Jenkins 一樣,我們可以在 .github/workflows 加入 feature-action.yml 檔案,來定義當 Feature 分支被推上去之後所要執行自動化作業。

name: Angular Build

on:
  push:
    branches:
      - feature/*

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2.3.4
      - name: Setup Node
        uses: actions/setup-node@v2.1.5
        with:
          node-version: 18.x
      - name: Package Restore
        run: npm install
      - name: Unit Testing
        run: npm run test:headless
      - name: E2E Testing
        run: npm run e2e:run
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v1

如上面程式所示,此 GitHub Actions 作業使用 actions/checkoutactions/setup-node 來切換分支與指定 Node 版本;接著與前一篇相同,依續執行安裝 NPM 套件、執行單元測試作業與執行端對端測試作業等作業;最後,則將測試覆蓋資訊更新至 CodeCov 服務。順帶一提,若要讓測試覆蓋報表能整合至 CodeCov 服務,需要在 karma.conf.js 組態檔加入類型為 lcovonly 的測試覆蓋報表。

coverageReporter: {
  dir: require("path").join(
    __dirname,
    "./coverage/ironman-2022-angular-test-example"
  ),
  subdir: ".",
  reporters: [
    { type: "html" },
    { type: "text-summary" },
    { type: "lcovonly" },
  ],
}

接下來

這一篇說明使用 GitHub Action 來執行自動化作業,透過 CI/CD 工具執行自動化可以讓我們推上程式時,執行如測試、發佈與通知等一連串的作業,來減少人工作業的時間與成本。


上一篇
Day 27 - 自動化測試 - 利用 Jenkins Multibranch Pipeline 執行測試
下一篇
Day 29 - 番外篇 - 在 Angular 專案安裝 Jest 測試框架
系列文
今天我想來在 Angular 應用程式上加上測試保護30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言